package cn.iocoder.yudao.module.vote.controller.admin.voteHead.vo;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import java.util.*;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import com.alibaba.excel.annotation.*;
import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;

@Schema(description = "管理后台 - 投票头 Response VO")
@Data
@ExcelIgnoreUnannotated
public class VoteHeadRespVO {

    @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
    @ExcelProperty("主键")
    private Long id;

    @Schema(description = "活动名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿")
    @ExcelProperty("活动名称")
    private String name;

    @Schema(description = "活动编号")
    @ExcelProperty("活动编号")
    private String actNo;

    @Schema(description = "活动封面图key", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("活动封面图key")
    private String actCoverKey;

    @Schema(description = "活动视频key")
    @ExcelProperty("活动视频key")
    private String actVideoKeys;

    @Schema(description = "活动轮播图keys")
    @ExcelProperty("活动轮播图keys")
    private String actPicKeys;

    @Schema(description = "简介")
    @ExcelProperty("简介")
    private String subject;

    @Schema(description = "描述", example = "随便")
    @ExcelProperty("描述")
    private String description;

    @Schema(description = "排序", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("排序")
    private Integer sort;

    @Schema(description = "状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
    @ExcelProperty(value = "状态", converter = DictConvert.class)
    @DictFormat("system_user_sex") // TODO 代码优化：建议设置到对应的 DictTypeConstants 枚举类中
    private String status;

    @Schema(description = "投票开始时间")
    @ExcelProperty("投票开始时间")
    private LocalDateTime startTime;

    @Schema(description = "投票结束时间")
    @ExcelProperty("投票结束时间")
    private LocalDateTime endTime;

    @Schema(description = "投票规则（单选投票、多选投票）")
    @ExcelProperty(value = "投票规则（单选投票、多选投票）", converter = DictConvert.class)
    @DictFormat("system_user_sex") // TODO 代码优化：建议设置到对应的 DictTypeConstants 枚举类中
    private String voteRule;

    @Schema(description = "投票次数（总、每天）")
    @ExcelProperty(value = "投票次数（总、每天）", converter = DictConvert.class)
    @DictFormat("system_user_sex") // TODO 代码优化：建议设置到对应的 DictTypeConstants 枚举类中
    private String voteRange;

    @Schema(description = "投票次数（ /次）")
    @ExcelProperty("投票次数（ /次）")
    private Integer voteRangeItem;

    @Schema(description = "发起人id", example = "3843")
    @ExcelProperty("发起人id")
    private Long userId;

    @Schema(description = "票数查看规则（投票前可看票数、投票后可看票数、结束后可看票数、仅发起人可看票数）")
    @ExcelProperty(value = "票数查看规则（投票前可看票数、投票后可看票数、结束后可看票数、仅发起人可看票数）", converter = DictConvert.class)
    @DictFormat("system_user_sex") // TODO 代码优化：建议设置到对应的 DictTypeConstants 枚举类中
    private String resultRule;

    @Schema(description = "选项的类型（文字投票、图片投票、视频投票）", example = "1")
    @ExcelProperty(value = "选项的类型（文字投票、图片投票、视频投票）", converter = DictConvert.class)
    @DictFormat("system_user_sex") // TODO 代码优化：建议设置到对应的 DictTypeConstants 枚举类中
    private String voteType;

    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("创建时间")
    private LocalDateTime createTime;

}